package cn.com.guage.dtm.huawei;

import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;

public class HJ15_求int型正整数在内存中存储时1的个数 {
    public static void main(String[] args) {
       //method1();
      //  method2();
        method3();
    }

    /**
     * 1. 主要利用10进制转换为2进制的原理
     * 2. 十进制整数转换为二进制整数采用"除2取余，逆序排列"法。具体做法是：用2去除十进制整数，
     * 可以得到一个商和余数；再用2去除商，又会得到一个商和余数，如此进行，直到商为零时为止，
     * 然后把先得到的余数作为二进制数的低位有效位，后得到的余数作为二进制数的高位有效位，依次排列起来。
     *
     */
    private static void  method1(){
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextInt()) { // 注意 while 处理多个 case
            List<Integer> list = new ArrayList<Integer>();
            int a = in.nextInt();
            while(a!=0){
                int y = a % 2;
                a = a / 2;
                if(y==1){
                    list.add(y);
                }
            }
            System.out.println(list.size());
        }
    }

    /**
     * 1.利用基本类型的包装类的toBinaryString可以将10进制转换为二进制
     */
    private static void  method2(){
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLong()) { // 注意 while 处理多个 case
            List<Integer> list = new ArrayList<Integer>();
            long a = in.nextLong();
            String binary = Long.toBinaryString(a);
            String[] array = binary.split("");
            int num=0;
            for(int i=0;i<array.length;i++){
                if(array[i].equals("1")){
                    num++;
                }
            }
            System.out.println(num);
        }
    }

    private static void  method3(){
        Scanner in = new Scanner(System.in);
        // 注意 hasNext 和 hasNextLine 的区别
        while (in.hasNextLong()) { // 注意 while 处理多个 case
            List<Integer> list = new ArrayList<Integer>();
            long a = in.nextLong();
            String binary = Long.toBinaryString(a);
            String oneString =  binary.replace("0","");
            System.out.println(oneString.length());
        }
    }
}
